Move saved_upcall_mask in cpu_user_regs to CS+4 rather than CS+2 on
x86/64.
Signed-off-by: Keir Fraser <keir@xensource.com>
testb $TBF_INTERRUPT,%cl
setnz VCPUINFO_upcall_mask(%rax)# TBF_INTERRUPT -> clear upcall mask
popq %rax
- shll $16,%eax # Bits 16-23: saved_upcall_mask
+ shlq $32,%rax # Bits 32-39: saved_upcall_mask
movw UREGS_cs+8(%rsp),%ax # Bits 0-15: CS
FLT5: movq %rax,8(%rsi) # CS/saved_upcall_mask
movq UREGS_rip+8(%rsp),%rax
u32 error_code; /* private */
u32 entry_vector; /* private */
union { u64 rip, eip; };
- u16 cs;
+ u16 cs, _pad0[1];
u8 saved_upcall_mask;
- u8 _pad0[5];
+ u8 _pad1[3];
union { u64 rflags, eflags; };
union { u64 rsp, esp; };
- u16 ss, _pad1[3];
- u16 es, _pad2[3];
- u16 ds, _pad3[3];
- u16 fs, _pad4[3]; /* Non-zero => takes precedence over fs_base. */
- u16 gs, _pad5[3]; /* Non-zero => takes precedence over gs_base_user. */
+ u16 ss, _pad2[3];
+ u16 es, _pad3[3];
+ u16 ds, _pad4[3];
+ u16 fs, _pad5[3]; /* Non-zero => takes precedence over fs_base. */
+ u16 gs, _pad6[3]; /* Non-zero => takes precedence over gs_base_user. */
} cpu_user_regs_t;
typedef u64 tsc_timestamp_t; /* RDTSC timestamp */